package com.多线程基础.锁的常用情况.同步方法锁使用;

public class MyRunnable implements Runnable{

    int ticket=0;
    //第二种方式没必要加sticket,第一个方式可能创建多个
    // 对象,MyRunnale作为一个参数让线程去执行只会创建一次.
    @Override
    public void run() {
        //1.循环
        while (true){
                //2.同步代码块（同步方法）
                //静态就用类对象，不是静态就this
                //3判断是否末尾
                if (method()) break;


        }
    }

    private synchronized boolean method() {
        if(ticket==100){
            return true;
        }
        else {
            try {
                Thread.sleep(10);
                //不睡的话一下执行完
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            ticket++;
            System.out.println(Thread.currentThread().getName()+"正在买"+ticket+"张");
        }
        return false;
    }
}
